package club.mzywucai.blog.file_system.util;

/**
 * 注意此工具的可以设置加密的密码，密码我们默认为8位+
 * 可以超过8位，但是不能少于八位！
 *
 * 用于对文件的下载地址进行加密，没有登录之前不能进行下载。
 * 登录之后再对地址进行解密。
 *
 * @author mzywucai
 *
 */
public class XORUtil {
    /**
     *
     * @param enc 需要加密的内容
     * @param secret 密码
     * @return
     */
    public static String encode(String enc, String secret) {

        char str[] = enc.toCharArray();
        int k;
        for (k = 0; k < str.length; k++) {
            str[k] = (char) (str[k] ^ secret.charAt(k % 8));
        }
        String s = new String(str);
        // System.out.println("暗文：" + s);
        return s;


    }
    /**
     *
     * @param dec 需要解密的内容
     * @param secret 密码
     * @return
     */
    public static String decode(String dec, String secret) {

        char str[] = dec.toCharArray();
        int k;

        for (k = 0; k < str.length; k++) {
            str[k] = (char) (str[k] ^ secret.charAt(k % 8));
        }
        String t = new String(str);
        // System.out.print("明文：" + t);
        return t;
    }


    public static void main(String[] args) {
        String secret = "12345678";
        String text = "/document/2019/2/11/086bf2a2-e96e-4da6-8657-94f54a5835da.pdf";

        String m = XORUtil.encode(text, secret);
        // System.out.println(m);

        String ming = XORUtil.decode(m, secret);
        // System.out.println(ming);

        // 亻弍乹甯盱旪亓粕仠彆两畼皵斾仙糉亻彘丧畣皲旦井粚京彟两甯皩斶五粞交彄丢畺皰斾仛糃亠彞乴畡皲新仂糋仵弌並畻皵斷仆糋人弙乲甪
        // 五彩世界的文件系统

        String s = "亻弍乹甯旲些範瑨仠彆两畼斶仏箎琴亻彘丧畣斱亗篂瑧京彟两甯斪仇篃瑣交彄丢畺斳仏箌琾亠彞乴畡斱仁箕琶仵弌並畻斶仆箑琶人弙乲甪";



        //
        String encodeString = "亻弍乹甯旲些範瑨仠彆两畼斶仏箎琴亻彘丧畣斱亗篂瑧京彟两甯斪仇篃瑣交彄丢畺斳仏箌琾亠彞乴畡斱仁箕琶仵弌並畻斶仆箑琶人弙乲甪";
        String secretString = "五彩世界文件管理";

        System.out.println(s.equals(encodeString));
        System.out.println(encodeString);

        String decodeString = XORUtil.decode(secretString, encodeString);
        System.out.println(decodeString);
    }
}
